我們知道,vSAN是一個以Policy為基礎的分散式儲存系統。vSAN會根據Object設定的Policy,把Object下的Component妥善地分散在不同Host上。
Policy指的就是RAID 0/1/5/6,目前常見的有這四種。RAID 5/6由於需要進行erasure coding和XOR操作,會耗費一些計算資源和I/O,所以只有在使用all flash架構時才能設定。
一般來說,Policy除了設定RAID 0/1/5/6,還可以設定FTT(Failures To Tolerate)。RAID設定的目的是調整怎麼對資料進行備份,而FTT則是設定能容忍幾台Host故障。例如,可以設定RAID 1和FTT=2。RAID 1的寫入邏輯是寫多份,由於FTT=2,vSAN會對資料一模一樣地寫三份,這樣才能容忍三個Host掛掉。
我們把Object下的Component分散在不同的Host目的是為了安全。如果一台Host掛了,資料也不會丟失。但是現在的主機可能是機架式的,這意味著機架掉電會讓整個機架上的Host都掛掉。如果Object下的所有Components都放在同個機架上怎麼辦?
我們可以對一組Host進行Group,這一組Host稱為Fault Domain。這樣一來,如果設定RAID 1和FTT=1,Object下的兩個Component加上Witness就會分散在不同的Fault Domain。注意,vSAN Cluster至少需要三台Host,也就是說如果要設定Fault Domain,至少需要三個Fault Domain。
那接下來有個疑問了,如果我想做Datacenter層級的備份呢?如果Datacenter失火了,我想要兩個Datacenter,並把Component分配在這兩個Datacenter?這時候就需要Stretched Cluster來解決這個問題。
當vSAN偵測到異常事件,例如Host掉電、Disk損壞、網路異常等,vSAN會確認故障的設備存放哪些Component,並嘗試對這些Component進行修復,同時將資料I/O導向健康的Component。
遇到不同的異常事件,vSAN會採取不同的應對方式,優先重建Component。如果無法重建,例如vSAN Cluster只有三個Host且Policy是FTT=1且一個Host掛了,就會標記為無法重建。以下列舉幾個在vSAN中定義的Object狀態: